Video decoders are one of the most complex components in a multimedia playback or trans-coding pipeline. As a system component, the video decoder should be stable and capable of decoding bitstreams of digital media data that have been compressed according to an appropriate compression standard (e.g., H.264/AVC, MPEG-2, MPEG-4, VC-1, or other such standard). A video decoder should also be capable of decoding bitstreams of digital media data that do not fully comply with the relevant compression standard. For example, video decoders desirably decode as much as possible of a non-conforming or non-compliant bitstream and provide an acceptable playback experience. A decoder can be designed to handle such nonconforming bitstreams using error-protection, error-concealment, error correction, or other such error handling techniques.
Non-conforming bitstreams have a number of possible sources. For example, a non-conforming bitstream can be created by an encoder that is slightly faulty or that does not appropriately confine every parameter in a compressed bitstream. Such imperfect encoders are becoming more and more common with the proliferation of consumer electronics that include encoding hardware or algorithms (e.g., digital video cameras, smartphones, and the like). Non-conforming bitstreams can also be created as a result of streaming errors, a user switching channels on a digital TV or on-line streaming service, or by starting playback of a digital video at an unusual point in the bitstream where illegal or invalid parameters may be present (e.g., by skipping to a particular point in a digital video). Non-conforming bitstreams can also be the result of a malicious corruption by a third party. Additionally, there are a wide variety of potential errors in a non-conforming bitstream. The errors can include, for example, one or more of the following: parameter values that are outside the boundaries defined by the compression standard, missing bits or packets, bit flips, chunk inversion, or the presence of additional bits or packets at locations in the bitstream that do not comply with the syntax of the compression standard. To help design video decoders that are robust and able to provide premium playback experiences, it is desirable to test decoders or decoding techniques using non-conforming bitstreams that emulate bitstreams found in the real world or that target specific modules of a decoder.
Bitstream manipulations could be performed completely randomly. However, such a completely random approach is not able to produce a bitstream with a targeted non-conformance and most often will produce a corruption that is not plausible or likely. Accordingly, improved tools and techniques for performing targeted bitstream manipulation are desired.
Encoders should also be designed to produce bitstreams of compressed digital media data that fully comply with the relevant compression standard. Verifying encoders for standard compliance is becoming increasingly important as diverse multimedia content is becoming more easily available to general users. For example, consumers are increasingly creating and editing content from home movies, shared internet videos, and professional movies. Furthermore, users may want to transcode their video content into another format, resolution, bit rate, and/or frame rate in order for the content to be more easily shared among various computer displays, TVs, portable devices, or through the Internet. All of these operations will typically involve an encoder. Although the video decoding process is well defined in various standards (e.g., H.264/AVC, MPEG-2, MPEG-4, VC-1, or other such standard), video encoding processes still allow for a lot of design flexibility so long as the resulting encoded bitstreams are conformant to the corresponding standard. Therefore, a properly designed encoder desirably produces encoded bitstreams that conform to the appropriate standard, provide efficient encoding for the targeted application of the encoder in terms of both quality and performance, and correctly respond to user selected settings. To help evaluate whether an encoder achieves these desired goals, improved techniques and tools for analyzing an encoded bitstream produced by an encoder in development (an encoder under test) for compliance with the appropriate standard are desired.